package utils

import (
	"sync/atomic"
	"time"
)

var (
	defaultCronFlag int32 = 0
	defaultCron     *Cron = nil
)

func CheckDefaultCron() bool {
	if defaultCron == nil {
		if atomic.CompareAndSwapInt32(&defaultCronFlag, 0, 1) {
			defaultCron = NewCron()
		} else {
			time.Sleep(time.Millisecond * 100)
		}
	}
	return defaultCron != nil
}

func DefaultCron() *Cron {
	if !CheckDefaultCron() {
		panic("defaultCron创建失败!!!")
	}
	return defaultCron
}

func AddSchedule(exp string, task func()) (sch *CronSchedule, err error) {
	return DefaultCron().AddSchedule(exp, task)
}
